Manejo de Dataframes en Python

Introducción:Manejo de Dataframes en Python

Ilustración que compara un DataFrame con una hoja de cálculo de empleados, mostrando datos organizados en columnas como nombre, edad, cargo y salario.
Un DataFrame se asemeja a una hoja de cálculo donde cada fila representa un registro y cada columna un tipo de dato, permitiendo organizar, filtrar y analizar la información de forma clara y estructurada.

Un DataFrame es una de las estructuras de datos más potentes y utilizadas dentro de la biblioteca Pandas en Python, diseñada especialmente para el análisis y la manipulación de información tabular. Su principal característica es que organiza los datos en filas y columnas, de manera similar a una hoja de cálculo o una tabla en una base de datos.

Esta estructura permite trabajar con grandes volúmenes de información de forma eficiente, ofreciendo herramientas para filtrar, ordenar, combinar, agrupar y transformar datos con facilidad. Además, los DataFrames admiten distintos tipos de datos en cada columna (numéricos, de texto, fechas, booleanos, entre otros), lo que los hace extremadamente versátiles.

Gracias a su flexibilidad, los DataFrames se han convertido en un componente esencial en tareas de análisis de datos, ciencia de datos, machine learning y visualización, permitiendo a los desarrolladores y analistas extraer conocimiento valioso a partir de conjuntos de datos estructurados o no estructurados.


Definición: Dataframe

Un DataFrame en Pandas (Python) es una estructura de datos bidimensional que permite almacenar y manipular información en forma de tabla, similar a una hoja de cálculo de Excel o una tabla de base de datos.

Cada fila representa un registro u observación, y cada columna representa una variable o campo de datos.

Características Principales de Dataframes

  • Estructura etiquetada: Las filas y columnas tienen etiquetas llamadas índices, lo que permite acceder fácilmente a los datos por nombre o posición.
  • Tipos de datos mixtos: Cada columna puede contener un tipo de dato distinto (números, texto, fechas, valores booleanos, etc.).
  • Manipulación sencilla: Permite filtrar, ordenar, agrupar, combinar y transformar datos de forma muy eficiente.
  • Integración con otras herramientas: Es ampliamente usado en análisis de datos, machine learning y visualización, y puede leer/escribir datos desde múltiples formatos como CSV, Excel, SQL, JSON, entre otros.

Ejemplo Básico

                  
                    import pandas as pd

                    # Crear un DataFrame a partir de un diccionario
                    data = {
                        'Nombre': ['Ana', 'Luis', 'Carlos', 'Eduardo', 'Natalia', 'Carmen'],
                        'Edad': [23, 30, 27, 53, 48, 38],
                        'Ciudad': ['Bogotá', 'Medellín', 'Cali', 'Bogotá', 'Cali', 'Medellín']
                    }

                    df = pd.DataFrame(data)
                    print(df)
                    # Salida esperada
                    #   Nombre  Edad    Ciudad
                    # 0 Ana     23      Bogotá
                    # 1 Luis    30    Medellín
                    # 2 Carlos  27        Cali
                    # 3 Eduardo 53      Bogotá
                    # 4 Natalia 48        Cali
                    # 5 Carmen  38    Medellín                    
                  
                

En resumen, un DataFrame es la herramienta principal de Pandas para manejar datos estructurados en Python, combinando la potencia de las listas y diccionarios con la facilidad de una tabla organizada.


Como se Usan los Dataframes

Acceder a los datos

Por columna:

                  
                    df['Nombre']                # Devuelve la columna 'Nombre'
                    # Salida esperada
                    #  0        Ana
                    # 1       Luis
                    # 2     Carlos
                    # 3    Eduardo
                    # 4    Natalia
                    # 5     Carmen
                    # Name: Nombre, dtype: object 

                    df[['Nombre', 'Ciudad']]    # Devuelve varias columnas
                    # Salida esperada
                    #     Nombre    Ciudad
                    # 0      Ana    Bogotá
                    # 1     Luis  Medellín
                    # 2   Carlos      Cali
                    # 3  Eduardo    Bogotá
                    # 4  Natalia      Cali
                    # 5   Carmen  Medellín                    
                  
                

Por filas (posición o etiqueta)::

                  
                    df.iloc[0]     # Accede a la primera fila (por índice)
                    # Salida esperada
                    # Nombre       Ana
                    # Edad          23
                    # Ciudad    Bogotá
                    # Name: 0, dtype: object 

                    df.loc[1]      # Accede a la fila con etiqueta 1
                    # Salida esperada
                    # Nombre         Luis
                    # Edad             30
                    # Ciudad     Medellín
                    # Name: 1, dtype: object                    
                  
                

La diferencia entre loc e iloc en Pandas se resume así:

loc iloc
Tipo de acceso Por etiquetas (nombres de filas o columnas) Por posición numérica (índices 0, 1, 2, …)
Inclusión del rango final Incluye el límite final Excluye el límite final
Ejemplo df.loc['a', 'Edad'] → usa nombres df.iloc[0, 1] → usa posiciones
Uso recomendado Cuando se conocen las etiquetas Cuando se conocen las posiciones

Razones del porqué usar loc y no iloc:

  • Mayor legibilidad: loc hace que el código sea más comprensible al usar nombres en lugar de números.
  • Menor riesgo de errores: Las etiquetas no cambian si se reordenan las filas o columnas, lo que evita confusiones.
  • Más intuitivo: Trabajar con nombres de columnas es más natural en análisis de datos.
  • Acceso combinado: Permite filtrar y seleccionar datos por etiquetas y condiciones en una sola línea.

Operaciones Comunes

Filtrado de Datos

El filtrado de datos en un DataFrame de Pandas permite seleccionar únicamente las filas que cumplen una o varias condiciones específicas. Es una de las operaciones más útiles para analizar información y obtener resultados precisos.

Se puede usar operadores lógicos para crear una condición que seleccione filas:

Sintaxis básica:

                    
                      import pandas as pd

                      # Crear un DataFrame a partir de un diccionario
                      data = {
                          'Nombre': ['Ana', 'Luis', 'Carlos', 'Eduardo', 'Natalia', 'Carmen'],
                          'Edad': [23, 30, 27, 53, 48, 38],
                          'Ciudad': ['Bogotá', 'Medellín', 'Cali', 'Bogotá', 'Cali', 'Medellín']
                      }

                      df = pd.DataFrame(data)

                      # Filtrar las personas mayores de 25 años
                      filtro = df['Edad'] > 25
                      df_filtrado = df[filtro]
                      print(df_filtrado)

                      # Salida esperada
                      #     Nombre  Edad    Ciudad
                      # 1     Luis    30  Medellín
                      # 2   Carlos    27      Cali
                      # 3  Eduardo    53    Bogotá
                      # 4  Natalia    48      Cali
                      # 5   Carmen    38  Medellín
                    
                  

Descripción Estadística

La descripción estadística es el proceso mediante el cual se resumen y analizan los datos para comprender sus características principales, sin realizar inferencias ni predicciones. Su propósito es explicar cómo se comportan los datos mediante valores numéricos, tablas o gráficos que muestran tendencias, variaciones y distribuciones.

El objetivo de la descripción estadística es entender la información contenida en un conjunto de datos de forma sencilla y cuantificable. Permite responder preguntas como:

  • ¿Cuál es el valor promedio?
  • ¿Cuánto varían los datos?
  • ¿Cuáles son los valores mínimos y máximos?
  • ¿Cómo se distribuyen los datos en general?

Sintaxis básica:

                    
                      import pandas as pd
                                          
                      df = pd.DataFrame({
                          'Nombre': ['Ana', 'Luis', 'Carlos', 'María', 'Sofía'],
                          'Edad': [23, 30, 27, 22, 35],
                          'Ciudad': ['Bogotá', 'Cali', 'Medellín', 'Bogotá', 'Cali'],
                          'Salario': [2500, 3200, 2800, 2400, 3500]
                      })

                      # Descripción estadística del subconjunto
                      descripcion = df.describe()
                      print(descripcion)
                      
                      # Salida esperada:
                      #             Edad      Salario
                      # count   5.000000     5.000000       Indica la cantidad de datos no nulos (no vacíos) en la columna.
                      # mean   27.400000  2880.000000       Representa la media aritmética o promedio de los valores de la columna.
                      # std     5.319774   465.832588       Es la desviación estándar, una medida de cuánto varían los datos respecto al promedio.
                      # min    22.000000  2400.000000       Muestra el valor mínimo encontrado en la columna.
                      # 25%    23.000000  2500.000000       Indica que el 25% de los valores son menores o iguales a este número
                      # 50%    27.000000  2800.000000       Es el valor central de los datos ordenados.
                      # 75%    30.000000  3200.000000       Indica que el 75% de los valores son menores o iguales a este número.
                      # max    35.000000  3500.000000       Muestra el valor máximo en la columna.
                    
                  

Importación en Análisis de Datos con Python

Importación de Archivos CSV

La capacidad de importar y exportar datos es fundamental en el análisis de datos, ya que la mayoría de los datos que utilizamos provienen de fuentes externas, como archivos CSV, Excel, bases de datos, o APIs. En Python, la librería Pandas simplifica enormemente estas tareas.

Estructura Básica

Un archivo CSV tiene una estructura muy simple:

                      
                        Nombre,Edad,País
                        Ana,25,Colombia
                        Luis,30,México
                        María,28,Argentina
                      
                    
  • La primera línea suele contener los nombres de las columnas (encabezados).
  • Cada fila siguiente contiene los valores de cada registro.
  • Los campos se separan por comas, aunque en algunos países o configuraciones se usa punto y coma (;).

Características Principales

  • Es un archivo de texto plano, por lo que puede abrirse con cualquier editor (como Bloc de notas).
  • Es ligero y fácil de compartir.
  • Puede ser leído por hojas de cálculo (Excel, Google Sheets) y por lenguajes de programación como Python.
  • No guarda formato visual (colores, fórmulas o estilos), solo datos estructurados.

Uso en Python con Pandas

                      
                        import pandas as pd

                        df.to_csv('productos_modificados.csv', index=False)
                      
                    

Parámetros útiles de read_csv():

Parámetro Descripción Ejemplo
index Guarda solo los datos (False) index=False
sep Separador (,, ;, \t) sep=';'
header Indica si el archivo tiene encabezado header=None
names Define nombres de columnas manualmente names=['Producto','Cantidad','Precio']
encoding Codificación del archivo encoding='utf-8'
usecols Selecciona columnas específicas usecols=['Producto','Precio']

Opción A – Archivo local (desde tu computador): Importar un archivo CSV con Pandas:

                      
                        import pandas as pd

                        # Subir archivo manualmente, agrega botón para escoger archivo local
                        archivo = files.upload()

                        # Leer el archivo CSV
                        df = pd.read_csv('productos.csv')

                        # Mostrar primeras filas
                        df.head()                        
                      
                    

Opción B – Archivo en una ruta local (PC o servidor):

                      
                        import pandas as pd

                        # Cambia la ruta al lugar donde guardaste tu archivo
                        ruta = "C:/Users/Asus/Descargas/productos.csv"   # 🧭 En Windows
                        # ruta = "/home/usuario/Documentos/productos.csv"     # 🐧 En Linux/Mac

                        # Si el CSV usa punto y coma (;) como separador:
                        df = pd.read_csv(ruta, sep=';')

                        # Si el CSV usa coma (,) como separador (por defecto):
                        # df = pd.read_csv(ruta)

                        # Mostrar las primeras filas
                        print(df.head())
                      
                    

Opción C – Cargar CSV desde una URL:

                      
                        url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv"
                        df = pd.read_csv(url)
                        df.head()
                      
                    

Opción D – Importar desde Colab:

                      
                        from google.colab import drive
                        import pandas as pd

                        # Montar Google Drive
                        drive.mount('/content/drive')

                        # Cambia la ruta a donde está tu archivo
                        ruta = "/content/drive/MyDrive/productos.csv"

                        df = pd.read_csv(ruta)
                        df.head()
                      
                    

Ventajas de CSV

  • Compatible con casi todas las aplicaciones.
  • Fácil de generar y procesar.
  • Ideal para intercambiar datos entre sistemas diferentes.
Desventajas de CSV
  • No admite tipos de datos complejos (solo texto y números).
  • No guarda formato ni fórmulas.
  • Puede generar errores si el separador (coma o punto y coma) no se interpreta correctamente.

Importación de Archivos Excel

La importación de archivos Excel en pandas con Python es una tarea fundamental en el análisis de datos, ya que permite leer información almacenada en hojas de cálculo y convertirla en estructuras de datos manipulables, como los DataFrames. A continuación se explica paso a paso cómo se realiza este proceso.

Requisitos Previos para Importar Documentos Excel

Antes de importar archivos Excel, es necesario tener instalada la biblioteca pandas y el motor de lectura de Excel, como openpyxl o xlrd.

En la terminal o consola de Python se deben ejecutar los siguientes comandos:

                    
                     pip install pandas openpyxl
                    
                  

Nota: openpyxl se utiliza para leer y escribir archivos Excel con extensión .xlsx. En versiones actuales de pandas, xlrd ya no soporta este formato.

Cargar un Archivo Excel

'datos.xlsx' es el nombre del archivo que se encuentra en la misma carpeta del script.

                    
                      df = pd.read_excel('datos.xlsx')
                    
                  

Si el archivo está en otra ubicación, se debe incluir la ruta completa:

                    
                      df = pd.read_excel('C:/Usuarios/Eduardo/Documentos/datos.xlsx')
                    
                  

Especificar una Hoja (sheet)

Un archivo Excel puede tener varias hojas.

Para leer una hoja específica se usa el parámetro sheet_name:

                    
                      df = pd.read_excel('datos.xlsx', sheet_name='Hoja1')
                    
                  

También se puede leer varias hojas al mismo tiempo (retorna un diccionario de DataFrames):

                    
                      datos = pd.read_excel('datos.xlsx', sheet_name=['Hoja1', 'Hoja2'])
                    
                  

Parámetros Útiles en read_excel()

Parámetro Descripción Ejemplo
usecols Selecciona columnas específicas usecols=['Nombre', 'Edad']
nrows Limita el número de filas leídas nrows=10
skiprows Omite filas iniciales skiprows=1
header Define la fila donde están los nombres de columnas header=2
dtype Establece el tipo de dato de columnas dtype={'Edad': int}

Verificar los Datos Importados

Después de la carga, es buena práctica inspeccionar el contenido del DataFrame:

                    
                      print(df.head())      # Muestra las primeras 5 filas
                      print(df.info())      # Muestra información general
                      print(df.describe())  # Estadísticas básicas
                    
                  

Importación de Otras Fuentes

Archivos de Texto Plano (.txt)

Los archivos .txt se pueden importar con el mismo método que los CSV, especificando el separador.

                    
                      df = pd.read_csv('datos.txt', sep='\t')                # separados por tabulación

                      df = pd.read_csv('datos.txt', delim_whitespace=True)    # separados por espacios
                    
                  

Archivos JSON (JavaScript Object Notation)

                    
                      df = pd.read_json('https://api.exemplo.com/usuarios.json')
                    
                  

pandas convierte automáticamente el contenido JSON en un DataFrame, si tiene estructura tabular.

Bases de Datos SQL

Pandas puede conectarse directamente a bases de datos como MySQL, PostgreSQL, SQLite, etc.

Ejemplo con SQLite:

                    
                      import sqlite3
                      import pandas as pd

                      conexion = sqlite3.connect('empresa.db')
                      df = pd.read_sql_query("SELECT * FROM empleados", conexion)
                      conexion.close()
                    
                  

Ejemplo con MySQL o PostgreSQL:

Requiere instalar sqlalchemy y el conector correspondiente:

                    
                      pip install sqlalchemy pymysql
                    
                  
                    
                      from sqlalchemy import create_engine
                      engine = create_engine('mysql+pymysql://usuario:contraseña@localhost/base_datos')
                      df = pd.read_sql('SELECT * FROM clientes', engine)
                    
                  

Datos desde una URL o API

Ejemplo con CSV en línea:

                    
                      url = 'https://raw.githubusercontent.com/datasets/covid-19/main/data/countries-aggregated.csv'
                      df = pd.read_csv(url)
                    
                  

Ejemplo con JSON desde una API:

                    
                      url = 'https://api.coindesk.com/v1/bpi/currentprice.json'
                      df = pd.read_json(url)
                    
                  

Archivos Parquet (columnar data)

El formato Parquet es muy usado en Big Data por su eficiencia.

                    
                      df.to_parquet('nuevo.parquet')
                    
                  

Exportación en Análisis de Datos con Python

Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur aut, nobis quam, natus eaque atque unde mollitia nostrum, reprehenderit ipsa aliquid voluptatibus? Perspiciatis corrupti.

COMENTARIOS

Si tiene alguna inquietud, duda o ha encontrado algún error, porfavor infórmelo a través del formulario disponible para estepropósito.

Deje su comentario

La política de privacidad, y los términos y condiciones estándisponibles en el formulario de contacto.